
//Copyright 1997-2009 Syrinx Development, Inc.
//This file is part of the Syrinx Web Application Framework (SWAF).
// == BEGIN LICENSE ==
//
// Licensed under the terms of any of the following licenses at your
// choice:
//
//  - GNU General Public License Version 3 or later (the "GPL")
//    http://www.gnu.org/licenses/gpl.html
//
//  - GNU Lesser General Public License Version 3 or later (the "LGPL")
//    http://www.gnu.org/licenses/lgpl.html
//
//  - Mozilla Public License Version 1.1 or later (the "MPL")
//    http://www.mozilla.org/MPL/MPL-1.1.html
//
// == END LICENSE ==
using System;
using System.IO;
using System.Xml;
using System.Collections;

namespace Swaf.BizRule
{
	/// <summary>
	/// Summary description for MultiCallInfo.
	/// </summary>
	public class MultiCallInfo
	{
		protected ICollection m_ruleParams;
		public MultiCallInfo(ICollection ruleParams)
		{
			m_ruleParams = ruleParams;
		}
		public MultiCallInfo(string serializedInfo)
		{
			ArrayList l = new ArrayList();
			XmlDocument doc = new XmlDocument();
			doc.LoadXml(serializedInfo);
			foreach(XmlElement el in doc.DocumentElement.ChildNodes)
				l.Add(Serialization.deserialize(el.GetAttribute("type"), el.InnerXml));
			m_ruleParams = l;
		}

		public ICollection RuleParams {get{return m_ruleParams;}}

		public override string ToString()
		{
			StringWriter str = new StringWriter();
			XmlTextWriter writer = new XmlTextWriter(str);
			writer.WriteStartElement("Elements");
			foreach(object i in m_ruleParams)
			{
				writer.WriteStartElement("Element");
				SerializationInfo info = Serialization.serialize(i);
				writer.WriteAttributeString("type", info.TypeName);
				writer.WriteString(info.SerialObject);
				writer.WriteEndElement();
			}
			writer.WriteEndElement();
			writer.Close();
			return str.ToString();
		}

	}
}
